Skip to content

Conversation

@pmenzel
Copy link
Collaborator

@pmenzel pmenzel commented Sep 11, 2026

No description provided.

pmenzel and others added 8 commits February 23, 2026 10:08
From the [Web site](https://nsxiv.codeberg.page/):

> Neo (or New or Not) Simple (or Small or Suckless) X Image Viewer
>
> nsxiv is a fork of the now-unmaintained sxiv with the purpose of being a
> (mostly) drop-in replacement for sxiv, maintaining its interface and adding
> simple, sensible features. nsxiv is free software licensed under
> GPL-2.0-or-later and aims to be easy to modify and customize.
[BEE] => entering bee_build() ..
[BEE] make -j300 PREFIX=/usr EPREFIX=/usr BINDIR=/usr/bin SBINDIR=/usr/sbin LIBEXECDIR=/usr/libexec SYSCONFDIR=/etc SHAREDSTATEDIR=/var LOCALSTATEDIR=/var LIBDIR=/usr/lib INCLUDEDIR=/usr/include DATAROOTDIR=/usr/share DATADIR=/usr/share INFODIR=/usr/share/info LOCALEDIR=/usr/share/locale MANDIR=/usr/share/man DOCDIR=/usr/share/doc/nsxiv
GEN config.h
cp config.def.h config.h
CC autoreload.o
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o autoreload.o autoreload.c
CC commands.o
make: c99: No such file or directory
make: *** [Makefile:35: autoreload.o] Error 127
make: *** Waiting for unfinished jobs....
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o commands.o commands.c
make: c99: No such file or directory
make: *** [Makefile:35: commands.o] Error 127
CC image.o
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o image.o image.c
make: c99: No such file or directory
CC main.o
make: *** [Makefile:35: image.o] Error 127
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o main.o main.c
make: c99: No such file or directory
make: *** [Makefile:35: main.o] Error 127
CC window.o
CC thumbs.o
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o window.o window.c
CC util.o
make: c99: No such file or directory
make: *** [Makefile:35: window.o] Error 127
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o thumbs.o thumbs.c
make: c99: No such file or directory
make: *** [Makefile:35: thumbs.o] Error 127
c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700  -DHAVE_LIBEXIF=1 -DHAVE_LIBFONTS=1  -DHAVE_INOTIFY=1 -I/usr/include/freetype2 -I/usr/include/freetype2   -c -o util.o util.c
make: c99: No such file or directory
make: *** [Makefile:35: util.o] Error 127
GEN version.h
bee_build() in /usr/libexec/bee/beesh.d/make.sh forwards its arguments to
make, so `bee_build CC=gcc` sets CC as a command-line variable, which
outranks an assignment in the Makefile. Exporting CC works only as long as
nsxiv leaves CC unset: `c99` is make's built-in default, switched from `cc`
by the `.POSIX:` line in nsxiv's Makefile, and the environment beats a
built-in default. The day upstream writes `CC = c99` into config.mk, the
environment loses and the build fails again with:

    CC autoreload.o
    c99 -Wall -pedantic -O2 -DNDEBUG -D_XOPEN_SOURCE=700 [...] -c -o autoreload.o autoreload.c
    make: c99: No such file or directory
    make: *** [Makefile:35: autoreload.o] Error 127

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
imlib2 1.12.6, needed for nsxiv 34, does not build against giflib 4.1.6
(2007), because its GIF loader takes `bool' from gif_lib.h, which giflib
5.2 lets include <stdbool.h>:

    loader_gif.c: In function '_load':
    loader_gif.c:69:5: error: unknown type name 'bool'
       69 |     bool            multiframe;
          |     ^~~~
    loader_gif.c:5:1: note: 'bool' is defined in header '<stdbool.h>'; did you forget to '#include <stdbool.h>'?
        4 | #include <gif_lib.h>
      +++ |+#include <stdbool.h>
    make[4]: *** [Makefile:982: loader_gif.lo] Error 1

giflib 5 dropped autotools in favour of a plain Makefile, so mee_configure
goes away; bee's make.sh hands PREFIX, BINDIR, LIBDIR and MANDIR to make.
Upstream builds no manual pages by default and lists the DocBook XML
sources in MANUAL_PAGES, so install-man would copy gif2rgb.xml and friends
into man1. `make -C doc manpages' turns them into roff with xmlto, and the
generated pages are passed to install-man as a command-line variable.

The soname changes from libgif.so.4 to libgif.so.7; emacs, emacs-29.3,
mplayer and mencoder still link the old one, which giflib_compat provides.
Upstream also deleted two dozen tools (gif2ps, gifasm, gifcolor, gifhisto,
gifinfo, icon2gif, raw2gif, rgb2gif, text2gif, ...), leaving gif2rgb,
gifbuild, gifclrmp, giffix, giftext and giftool.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
giflib 5.2.2 installs libgif.so.7, so the consumers already linked against
the old soname would stop working:

    $ ldd /usr/bin/emacs | grep libgif
            libgif.so.4 => /lib/libgif.so.4 (0x00007f5fc2e6f000)

Besides emacs and emacs-29.3 that is mplayer and mencoder. Build the old
release once more and keep nothing but the runtime library, so that the
header, the linker symlink, the static library and the tools keep coming
from giflib.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
imlib2 1.12.6, needed for nsxiv 34, uses heif_error_success, which libheif
only defines since 1.17.0:

    loader_heif.c: In function '_heif_writer':
    loader_heif.c:186:31: error: 'heif_error_success' undeclared (first use in this function); did you mean 'heif_error_code'?
      186 |     struct heif_error error = heif_error_success;
          |                               ^~~~~~~~~~~~~~~~~~
          |                               heif_error_code
    make[4]: *** [Makefile:1017: heif_la-loader_heif.lo] Error 1

libheif replaced autotools with CMake in 1.16.0, so --disable-go (the Go
bindings are gone) and --disable-static (BUILD_SHARED_LIBS is on anyway)
lose their counterpart. libsharpyuv wants libwebp 1.2 or later while /usr
has 0.5.1, hence -DWITH_LIBSHARPYUV=OFF; libde265 and x265 are built in, so
HEIC decoding and encoding work as before.

The soname stays libheif.so.1, so no compatibility package is needed. The
tools are renamed though: heif-convert gives way to heif-dec, and heif-enc,
heif-info, heif-view and heif-thumbnailer join it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign in to join this conversation on GitHub.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant